#include<bits/stdc++.h>
using namespace std;
int dir[4][2]={{-1,0},{1,0},{0,-1},{0,1}};
int r,s;
char p[25][25];
int st[300];
int maxx=0;
void dfs(int x,int y,int step)
{
	//cout<<x<<" "<<y<<" "<<step<<" "<<p[x][y]<<endl;
	if(step>maxx)
	{
		maxx=step;
	}
	for(int i=0;i<=3;i++)
	{
		int sx=x+dir[i][0];
		int sy=y+dir[i][1];
		if(sx>=0&&sx<=r-1&&sy>=0&&sy<=s-1&&!st[p[sx][sy]-'A'])
		{
			st[p[sx][sy]-'A']=true;
			step++;
			dfs(sx,sy,step);
			st[p[sx][sy]-'A']=false;
			step--;
		}
	}
}
int main()
{
	cin>>r>>s;
	for(int i=0;i<=r-1;i++)
	{
		cin>>p[i];
	}
	st[p[0][0]-'A']=true;
	dfs(0,0,1);
	cout<<maxx;
}
